//未排序的数组中找到排序后的第k大的数
法一：利用优先级队列默认情况下就是大堆，这样pop第k-1次后，在去top就是第k大的数。
代码：
class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        priority_queue<int> pq;
        for(auto e:nums)
        {
            pq.push(e);
        }
        while(--k)
        {
            pq.pop();
        }
        return pq.top();
    }
};
此算法的时间复杂度为O(NlogN);
空间复杂度为O(N);

法二：因为求的是一堆数中的前k个  联想到topk问题。
代码：
class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        priority_queue<int,vector<int>,greater<int>> pq;
        size_t i=0;
        for(;i<k;++i)
        {
            pq.push(nums[i]);
        }
        for(;i<nums.size();++i)
        {
            if(nums[i]>pq.top())
            {
                pq.pop();
                pq.push(nums[i]);
            }

        }
        return pq.top();
    }
};

此算法的时间复杂度为O(NlogK)
空间复杂度为O(K)